Metoda punktu siodłowego
dla całek funkcji zmiennej rzeczywistej

Daria Kamińska
Wydział Fizyki, Astronomii i Informatyki Stosowanej
Kraków 2011

Metoda punktu siodłowego

Jest techinką pozwalającą na aproksymację wartości całki postaci:

HoldForm[F[s]=Integrate[E^(s g[x]) p[x],{x,a,b}]]

przy dużych wartościach parametru s. Funkcję g[x] nazywamy funkcją główną, zaś funkcję p[x] funkcją poboczną.

Informacje dodatkowe

Ogólnie metodę tą stosuje się do funkcji zmiennej zespolonej. Całkujemy wtedy po konturze γ na płaszczyźnie zespolonej oraz wymagamy by funkcje g[z] oraz p[z] były holomorficzne w obszarze D zawierającym γ.

Jej odkrycie przypisujemy Debeye’owi, choć pierwotnej koncepcji możemy doszukać się w pracach Riemanna.

Schemat postępowania

Rozważmy funkcję postaci

HoldForm[F[s]=Integrate[E^(s Cos[x]) Cos[5 x],{x,-π,π}]]

▪ Znajdujemy argument maksimum funkcji głównej w przedziale całkowania. W naszym przypadku jest to punkt (Subscript[x, max])=0.
▪ Rozwijamy funkcję główną w szereg Taylora wokół (Subscript[x, max]).

Cos[x]≈Series[Cos[x],{x,0,2}]

▪ Funkcję poboczną zastępujemy jej wartością w maksimach funkcji głównej. W przykładzie otrzymujemy więc:

HoldForm[Cos[5 (Subscript[x, max])]=1]

▪ Liczymy powstałą w ten sposób całkę, rozszerzając jej granice od -∞ do ∞

HoldForm[F[s]=Integrate[E^(s Cos[x]) Cos[5 x],{x,-π,π}]   ⇒   Integrate[E^(s (1-x^2/2)) 1,{x,-Infinity,Infinity}] = E^s (Sqrt[2 π/s])]

Dokładność

dokladne1={Integrate[Exp[ Cos[x]]Cos[5 x],{x,-π,π}],Integrate[Exp[5 Cos[x]]Cos[5 x],{x,-π,π}],Integrate[Exp[10 Cos[x]]Cos[5 x],{x,-π,π}],Integrate[Exp[50 Cos[x]]Cos[5 x],{x,-π,π}]};
przyblizone1={Exp[1] Sqrt[2 π/1],Exp[5] Sqrt[2 π/5],Exp[10] Sqrt[2 π/10],Exp[50] Sqrt[2 π/50]};
dokladne=Table[Integrate[Exp[s Cos[x]]Cos[5 x],{x,-π,π}],{s,100,1200,200}];
przyblizone=Table[Exp[s] Sqrt[2 π/s],{s,100,1200,200}];

zal1=N[przyblizone1/dokladne1,5];
zal=N[przyblizone/dokladne,5];
Style[Row[{Grid[{{"Wartość s","((Przybliżonywynik)/(Dokładny wynik))"},{1,zal1[[1]]},{5,zal1[[2]]},{10,zal1[[3]]},{50,zal1[[4]]},{100,zal[[1]]},{300,zal[[2]]},{500,zal[[3]]},{700,zal[[4]]},{900,zal[[5]]},{1000,zal[[6]]}},Spacings->{1,1},Frame->All],"         ",Column[{"Rachunki zostały przeprowadzone dla całki postaci:",HoldForm[F[s]=Integrate[Exp[s Cos[x]] Cos[5 x],{x,-π,π}]]," ","Wynik przybliżony","- został uzyskany za pomocą metody punktu siodłowego"," ","Dokładny wynik ","- został obliczony z wyjściowej całki"}]}]
,FontFamily->"Arial",FontSize->18,FontColor->RGBColor[0.1,0.1,0.1],TextAlignment->Center]

Interaktywne przykłady

Style[Framed[Manipulate[
znajdzEkstrema[funkcjaGlowna_,zmienna_,dolnyPrzedzial_,gornyPrzedzial_]:=
Module[{ob1,wynik,pop,wynikOst},
ob1=Solve[D[funkcjaGlowna,zmienna]==0,zmienna];
wynik=zmienna/.ob1;
wynikOst=Select[Select[wynik,#>dolnyPrzedzial&],#<gornyPrzedzial&];
If[Length[wynikOst]==0,MessageDialog["Nie znaleziono maksimum funkcji w podanym przedziale."],pop=1];
wynikOst
];

znajdzMax[funkcjaGlowna_,zmienna_,dolnyPrzedzial_,gornyPrzedzial_]:=
Module[{punkty,fun,lista},
punkty=znajdzEkstrema[funkcjaGlowna,zmienna,dolnyPrzedzial,gornyPrzedzial];
fun=D[funkcjaGlowna,{zmienna,2}];

lista=DeleteCases[
Table[
If[
(fun/.{zmienna->punkty[[i]]})<0,
{punkty[[i]],funkcjaGlowna.{zmienna->punkty[[i]]}},
{a,a}],{i,1,Length[punkty]}],{a,a}];

Table[lista[[i,1]],{i,1,Length[lista]}]
];

rozwiniecie[funkcjaGlowna_,zmienna_,punkt_]:=
Module[{szereg,licz},
szereg=Series[funkcjaGlowna,{zmienna,punkt,2}]

];

punkty:=znajdzMax[funkcjaGlowna,x,-10,10];
roz[i_]:=Normal[rozwiniecie[funkcjaGlowna,x,punkty[[i]]]];
funkcjaPobWPunkcie[i_]:=funkcjaPoboczna/.{x->punkty[[i]]};
licz:=Sum[Integrate[Exp[s roz[i]] funkcjaPobWPunkcie[i],{x,-Infinity,Infinity},Assumptions->Element[s,Reals]&&s>0],{i,1,Length[punkty]}];

wykres:=Plot[funkcjaGlowna,{x,-5,5},ImageSize->Medium,PlotRange->{-15,10},PlotLabel->"Wykres funkcji "funkcjaGlowna];

napis[funkcjaGlowna_,funkcjaPoboczna_]:=
Switch[funkcjaGlowna,
-x^2,
Switch[funkcjaPoboczna,1,HoldForm[F[s]=Integrate[Exp[s (-x^2)],{x,-Infinity,Infinity}]],(x-7)^2,HoldForm[F[s]=Integrate[Exp[s  (-x^2)](x-7)^2 ,{x,-Infinity,Infinity}]],Exp[x],HoldForm[F[s]=Integrate[Exp[s  (-x^2)]Exp[x],{x,-Infinity,Infinity}]],Cos[x],HoldForm[F[s]=Integrate[Exp[s  (-x^2)]Cos[x],{x,-Infinity,Infinity}]]],
x^3-x^4,
Switch[funkcjaPoboczna,1,HoldForm[F[s]=Integrate[Exp[s  (x^3-x^4)],{x,-Infinity,Infinity}]],(x-7)^2,HoldForm[F[s]=Integrate[Exp[s  (x^3-x^4)](x-7)^2 ,{x,-Infinity,Infinity}]],Exp[x],HoldForm[F[s]=Integrate[Exp[s  (x^3-x^4)]Exp[x],{x,-Infinity,Infinity}]],Cos[x],HoldForm[F[s]=Integrate[Exp[s (x^3-x^4)]Cos[x],{x,-Infinity,Infinity}]]]
(*,
-(x^4)/4+2 x^2,
Switch[funkcjaPoboczna,1,HoldForm[F[s]=Integrate[Exp[s  (x^3-x^4)],{x,-Infinity,Infinity}]],(x-7)^2,HoldForm[F[s]=Integrate[Exp[s  (-(x^4)/4+2 x^2)](x-7)^2 ,{x,-Infinity,Infinity}]],Exp[x],HoldForm[F[s]=Integrate[Exp[s  (-(x^4)/4+2 x^2)]Exp[x],{x,-Infinity,Infinity}]],Cos[x],HoldForm[F[s]=Integrate[Exp[s (-(x^4)/4+2 x^2)]Cos[x],{x,-Infinity,Infinity}]]]*)
];

Panel[Style[Grid[{{"Liczona całka",napis[funkcjaGlowna,funkcjaPoboczna]},{"Argument maksimum funkcji głównej", Flatten[punkty]},{"Otrzymana wartość całki ",licz}},Spacings->{2,2}],16]]

,Style["Wybierz postać",16],Delimiter,{{funkcjaGlowna,-x^2,"funkcji głównej"},{-x^2,x^3-x^4(*-(x^4)/4+2 x^2*)}},
{{funkcjaPoboczna,1,"funkcji pobocznej"},{1,(x-7)^2,Exp[x],Cos[x]}},Delimiter," "
,Paneled->False,Alignment->Center, ControlPlacement->Left
],FrameMargins->10],Font->"TimesNewRoman",TextAlignment->Center]

Zastosowania

▪ Przybliżenie Stirlinga

HoldForm[n! =Γ(n+1)=Integrate[x^n E^(-x),{x,0,Infinity}]]

▪ Funkcje Bessla dla nϵℤ

HoldForm[(Subscript[J, n])[z]=(1/π) (Integrate[E^( z Cos[ϕ])Cos[n ϕ],{ϕ,0,π}])]

Literatura

[1] Kaplunovsky Vadim, Saddle Point Method of Asymptotic Expansion, http://bolvan.ph.utexas.edu/~vadim/Classes/2009s.homeworks/saddle.pdf
Notatki dla studentów w których została przedstawiona metoda punktu siodłowego zarówno w przypadku całek funkcji zmiennej rzeczywistej jak i zespolonej. Pokazano także jej zastosowanie w przypadku funkcji Air’ego.

[2] Klinenberg Brad, The saddle point method,
http://amath.colorado.edu/courses/4360/2006Spr/Klingenberg.pdf
Prezentacja ukazująca przykłady zastosowania metody punktu siodłowego.

[3] SpringerLink, Saddle point method,
http://eom.springer.de/s/s083070.htm
Krótkie przedstawienie metody punktu siodłowego. Warta uwagi literatura.

[4] Wikipedia, Method of steepest descent,
http://en.wikipedia.org/wiki/Saddle-point_method
Anojęzyczna wersja wikipedii dotycząca metody punktu siodłowego.